package com.hm.hall.commons.constans;

/**
 * 错误码定义类   define(code,msg)
 * <p>
 * 1000-1999  系统内部错误
 * 2000-2999 用户交互，前台展示错误
 * <p>
 * 按顺序申请，每个模块间隔保留100
 * <p>
 * <p>
 * 百度lbs错误码list 1--350
 * 0	成功
 * 1	服务器内部错误
 * 2	请求参数非法
 * 3	权限校验失败
 * 4	配额校验失败
 * 5	ak不存在或者非法
 * 101	服务禁用
 * 102	不通过白名单或者安全码不对
 * 202-205、210、233	无请求权限
 * 231	用户uid，ak不存在
 * 232	用户、ak被封禁
 * 233	sn签名计算错误
 * 210	权限资源不存在
 * 345	分钟配额超额
 * 346	月配额超额
 * 347	年配额超额
 * 348	永久配额超额无请求权限
 * 355	日配额超额
 * 350	配额资源不存在
 *
 * @author wei
 */
public enum ErrorCode {

    get_ok(0, ""),
    page_not_found(404, "页面不存在 [ID:404]"),//页面不存在
    service_exception(500, "反馈信息有误 [ID:500]"),  //系统返回错误
    network_exception(501, "反馈信息有误 [ID:501]"),  //网络返回错误
    parament_error(9999, "数据接口错误 [ID:502]"),
    net_timeout(503, "网络连接超时 [ID:503]"),
    data_repeat_error(506, "数据重复 [ID:506]"),
    data_repeat_dispose(507, "重复处理 [ID:507]"),
    server_maintain(600, "服务器正在升级，预计30分钟恢复 [ID:600]"),
    key_nofind(601, "KEY不存在 [ID:601]"),
    signerror(602, "签名错误 [ID:602]"),
    req_timestamp_error(603, "本地时间与北京时间不符 [ID:603]"),
    blacklist_content(701, "您已被系统屏蔽，无法操作 [ID:701]"),


    system_error_db(1001, "反馈信息有误 [ID:1001]"),  //数据库访问出错
    system_error_param(1002, "反馈信息有误 [ID:1002]"),  //错误参数
    text_illegality(1003, "输入的内容不正确 [ID:1003]"),  //文本输入含有非法的词汇
    database_error(1004, "反馈信息有误 [ID:1004]"),  //数据库操作错误
    permission_not_allowd(1005, "您没有该操作权限 "),  //数据库操作错误
    softversion_need_update(1006, "请安装最新版本再试 [ID:1006]"),
    call_cd_error(1009, "您的操作太频繁 [ID:1009]"),
    system_inner_error(1010, "系统内部错误 [ID:1010]"),
    system_inner_busy(1011, "系统繁忙 [ID:1011]"),
    opt_error(1012, "操作失败 [ID:1012]"),
    need_login(1020, "请登录后重试 [ID:1020]"),
    call_cd_error_not_hint(1021, ""),
    not_exist_email(1022, "邮箱或者密码不正确"),
    exist_email(1023, "邮箱已经注册"),
    channel_can_not_update_user_info(1024, "当前渠道不能修改信息"),
    update_user_info_cd(1025, "您在七天内修改过头像"),
    param_missing(1026, "缺失参数"),
    not_equel_password(1027, "两次输入密码不一致"),
    not_match_password_email(1028, "邮箱和密码不不匹配"),  //邮箱和密码不不匹配
    not_match_code(1030, "验证码不匹配"),
    send_code_frequently(1031, "验证码发送过快"),
    email_incorrect_format(1032, "邮箱格式不正确"),
    server_maintain_close_room(1050, "服务器正在维护，牌局已提前结束"),

    user_invalid_session(2000, "请您登录后重试"),  //用户没有登陆或session过期
    user_invalid_session_token_failure(2001, "您已在其他设备登录 [ID:2001]"),  //用户token过期
    user_login_token_error(2002, "登录TOKEN有误 [ID:2002]"),  //用户token过期
    user_invalid(2004, "请登录后重试"),  //该用户尚未注册
    user_not_exist(2005, "当前用户不存在"),
    user_exist(2006, "用户已存在，不能重复注册 [ID:2006]"),  //character  //用户已存在
    user_invalid_code(2011, "输入的验证码有误 [ID:2011]"),  //验证码无效
    user_error_mobile(2016, "输入的手机号码有误 [ID:2016]"),  //手机号码格式错误
    user_error_code(2017, "登录参数缺少code"),  //登录参数缺失
    user_error_login(2018, "登录微信失败"),
    user_error_permissions(2019, "权限不足"),

    club_not_find(2601, "该俱乐部不存在"),
    club_error_join(2602, "您已加入该俱乐部"),
    club_dismiss_not_allowed(2603, "俱乐部内还有牌局未结束，暂时无法解散"),
    club_apply_msg_exist(2604, "您已申请加入该俱乐部，不能重复申请"),
    club_user_not_admin(2605, "您不是俱乐部管理员，无法查看"),


    meaasge_has_deal(2701, "消息已被处理"),
    //********************** 游戏公共
    server_user_number_overflow(8006, "服务器人数爆满，请稍候再试"),


    //********************** 支付相关
    pay_product_not_find(4200, "商品不存在"),
    pay_iap_repeat_validate(4201, "账单有效，但己经验证过"),
    pay_iap_not_find(4202, "服务器数据库中没有此账单(无效账单)"),
    pay_iap_ignore(4203, "不处理"),
    pay_data_parse_error(4204, "支付数据解析错误"),
    pay_get_prepay_fail(4205, "ERROR:获得QQ钱包下单会话信息失败"),
    pay_buy_again(4201, "您已经购买过该商品！"),
    pay_productnot_find(4202, "商品不存在"),


    // **********************  微信服务号
    pay_weixin_get_prepay_fail(4251, "ERROR:获得微信下单会话信息失败！"),


    // **********************  订单 相关

    deal_trade_status_failed(5001, "用户充值失败：充值验证异常"),
    deal_productTopup_not_find(5002, "充值商品不存在"),
    deal_productTopup_is_marketable(5003, "充值商品已下架"),

    deal_balance_not_allowed(5004, "无法进行该操作"),//账户不可用
    deal_balance_insufficient(5005, "账户余额不足"),
    not_exist_share_info(6001, "暂无分享图片信息"),


    room_not_find(7001, "房间不存在"),
    room_guest_exist(7002, "房间已满"),
    room_user_joined(7006, "你已有房间正在进行"),

    seat_has_person(7007, "座位已有人坐下"),
    room_not_close(7008, "房间已关闭"),
    seat_sited(7009, "你已坐下"),
    buy_score_own_limit(7010, "你拥有的记分牌已达上限"),
    buy_score_buy_limit(7011, "你带入的记分牌已达上限"),
    buy_score_buy_audit(7012, "请勿重复申请带入记分牌"),
    room_not_join_club(7013, "你還沒有加入該俱樂部"),
    standup_by_allin(7014, "All In后无法站起"),
    sit_by_ip_limit(7015, "IP或GPS被限制"),
    sit_is_force_stand_by_master(7017, "你已被房主禁止入座"),
    sit_is_force_stand_by_club(7018, "你已被管理员禁止入座"),
    not_force_stand_user(7019, "当前不可强制站起用户"),


    //********************* 找回账号
    promoter_find_account_fail(8000, "回答有误，请6个小时后重试"),
    promoter_find_account_fail_cd(8001, "请6个小时后重试"),
    promoter_find_account_fail_not_cache(8002, "没有找到你对应的账号"),

    //********************** 其他消息
    unknow_error(10000, "未知错误");


    public int code;
    public String msg;

    private ErrorCode(int code, String msg) {
        this.code = code;
        this.msg = msg;
    }

    public static int getCode(String define) {
        return ErrorCode.valueOf(define).code;
    }

    public static String getMsg(String define) {
        return ErrorCode.valueOf(define).msg;
    }

    public static String getMsg(int code) {
        for (ErrorCode err : ErrorCode.values()) {
            if (err.code == code) {
                return err.msg;
            }
        }
        return "errorCode not defined ";
    }

    public static ErrorCode getErrorCodeByCode(int code) {
        for (ErrorCode err : ErrorCode.values()) {
            if (err.code == code) {
                return err;
            }
        }
        return null;
    }

}
